From: Marek Kasik Date: Mon, 11 Jul 2022 14:54:36 +0000 (+0200) Subject: print: Free print backends after use X-Git-Tag: archive/raspbian/4.8.3+ds-2+rpi1~3^2~81^2^2~76^2 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=e68a3a612397f20b41955054882a64ac2cafdbcd;p=gtk4.git print: Free print backends after use Print backends loaded in GtkPrintUnixDialog's load_print_backends() are not freed later as done in e.g. GtkPageSetupUnixDialog. This commit destroys and unref those print backends. Closes #5019 --- diff --git a/gtk/gtkprintunixdialog.c b/gtk/gtkprintunixdialog.c index 14c15264ad..fd23cd9a89 100644 --- a/gtk/gtkprintunixdialog.c +++ b/gtk/gtkprintunixdialog.c @@ -942,6 +942,7 @@ static void gtk_print_unix_dialog_finalize (GObject *object) { GtkPrintUnixDialog *dialog = GTK_PRINT_UNIX_DIALOG (object); + GList *iter; unschedule_idle_mark_conflicts (dialog); disconnect_printer_details_request (dialog, FALSE); @@ -967,7 +968,9 @@ gtk_print_unix_dialog_finalize (GObject *object) g_clear_pointer (&dialog->waiting_for_printer, (GDestroyNotify)g_free); g_clear_pointer (&dialog->format_for_printer, (GDestroyNotify)g_free); - g_list_free (dialog->print_backends); + for (iter = dialog->print_backends; iter != NULL; iter = iter->next) + gtk_print_backend_destroy (GTK_PRINT_BACKEND (iter->data)); + g_list_free_full (dialog->print_backends, g_object_unref); dialog->print_backends = NULL; g_clear_object (&dialog->page_setup_list);